package com.lzy.cloud.ticket.train.dtos;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;

/**
 * 订单信息表(提交订单时插入数据,回调之后修改表的数据)
 */
@Data
public class TrainOrderDto implements Serializable {
    private static final long serialVersionUID = 8381691905270448317L;
    /**
     * 主键
     */
    private Long id;

    /**
     * 第三方订单id
     */
    private String orderId;

    /**
     * 自定义订单id。制定规则为：龙之游会员id+时间戳。
     */
    private String customId;

    /**
     * 操作会员ID
     */
    private Long memberId;

    /**
     * 订单描述信息
     */
    private String msg;

    /**
     * 订单金额，用户还需支付金额
     */
    private BigDecimal orderMoney;

    /**
     * 订单总额，(票价总价+保险总价+配送费+代购费)
     */
    private BigDecimal orderAmount;

    /**
     * 余额支付
     */
    private BigDecimal balancePaid;

    /**
     * 坐席单价
     */
    private BigDecimal seatPrice;

    /**
     * 代购费
     */
    private BigDecimal agentTicketPrice;

    /**
     * 订单状态(0:未出票，1：待出票，2：出票中，3:出票完成，4：出票失败，5：退票申请中，6：处理中，7：退票完成，8：退票失败，9：改签已申请，10：改签申请中，11：改签完成，12：改签失败，13：改签取消)
     */
    private Integer status;

    /**
     * 车次
     */
    private String trainNo;

    /**
     * 12306的订单号
     */
    private String orderNumber;

    /**
     * 提交订单的时间
     */
    private String submitTime;

    /**
     * 订单失效的时间
     */
    private String expiredTime;

    /**
     * 处理完占座的时间
     */
    private String dealTime;

    /**
     * 您主动取消订单的时间
     */
    private String cancelTime;

    /**
     * 您请求出票（支付）的时间
     */
    private String payTime;

    /**
     * 完成出票时间
     */
    private String finishedTime;

    /**
     * 此订单最后一次申请退票的时间（退票针对乘客不针对订单）
     */
    private String refundTime;

    /**
     * 最后一次处理完退票的时间
     */
    private String refundEndTime;

    /**
     * 出发站名字
     */
    private String fromStationName;

    /**
     * 出发站简码
     */
    private String fromStationCode;

    /**
     * 到达站名字
     */
    private String toStationName;

    /**
     * 到达站简码
     */
    private String toStationCode;

    /**
     * 累积退款金额
     */
    private BigDecimal refundAmount;

    /**
     * 乘车时间。HH:mm
     */
    private String startTime;

    /**
     * 乘车日期。yyyy-MM-dd
     */
    private String startDate;

    /**
     * 抵达日期。yyyy-MM-dd
     */
    private String arriveDate;

    /**
     * 抵达时间。HH:mm
     */
    private String toTime;

    /**
     * 是否有保险（0-没有，1-有）
     */
    private Boolean insurance;

    /**
     * 订单联系方式
     */
    private String phone;

    /**
     * 坐席编码
     */
    private String seatCode;

    /**
     * 坐席名称
     */
    private String seatName;

    /**
     * 最迟支付时间
     */
    private String finalPaymentTime;

    /**
     * 订单请求出票次数
     */
    private Integer requestTimes;

    /**
     * 是否已经支付给龙之游（0-未支付，1-已支付）
     */
    private Boolean pay;

    /**
     * 创建时间
     */
    private String createTime;

    /**
     * 修改时间
     */
    private String updateTime;

    /**
     * 是否已删除。默认为0，1=已删除
     */
    private Boolean deleted;

    /**
     * 驴妈妈回调返回合作方订单号
     */
    private String partnerOrderNo;
    /**
     * 驴妈妈回调返回的订单号
     */
    private String orderNo;
    /**
     * 驴妈妈回调返回的12306电子票号(取票号)
     */
    private String electronicTicketNumber;


    /**
     * 乘客信息dto
     */
    private List<TrainPassengerDto> orderBookingPassengerInfos;

    /**
     * 物流信息dto
     */
    private TrainExpressInfoDto expressInfo;

    //以下消息来自请求参数
    //是否接受无座（1： 接受 ，0：不接受）
    private String acceptNoSeat;
    //是否正式订单（1:正式单，2：测试单）
    private Integer isFormalOrder;
    //购票方式（0：自动取票，1：送票上门，2：12306）
    private String buyTicketsType;
    //备选坐席
    private String backSeat;
    //在线坐席
    private String chooseSeat;
    //联系人email
    private String contactEmail;
    //12306用户名
    private String userName;
    //12306用户密码
    private String password;

    //创建人
    private Long createUser;
    //更新人
    private Long updateUser;

}